home *** CD-ROM | disk | FTP | other *** search
- #==========================================================================#
- | |
- | TimeCheck 1.0ß |
- | -------------- |
- | |
- | ein universelles Script-Tool zum überprüfen von Zeiträumen |
- | |
- | von Mr.WC alias Niels Böhm |
- | |
- #==========================================================================#
-
- Anforderungen: einen Amiga/Emulator (offensichtlich)
- Kickstart 2.05 / OS 37 oder höher
-
-
- COPYRIGHTANMERKUNG:
-
- Obwohl dieses Programm Freeware ist und beliebig kopiert und
- weitergegeben werden darf, bleibt dennoch das ©opyright bestehen.
- Keine der Dateien darf auf irgendeine Weise verändert werden und die
- Distribution muß vollständig erfolgen.
- Der Autor kann in keiner Weise für Schäden oder Datenverlust,
- verursacht durch dieses Programm, ob direkt oder indirekt,
- verantwortlich gemacht werden.
-
-
- Das Programm:
-
- Der Zweck dieses Programms ist prinzipiell, zu überprüfen, ob die Systemzeit
- innerhalb einer spezifizierten Zeitspanne liegt und abhängig davon bestimmte
- Teile eines Scripts entweder auszuführen oder eben nicht.
-
- Die Formatschablone sieht folgendermaßen aus:
-
- TimeCheck DATE,SINCE/K,FROM,UPTO/K,TILL/K,
- STDOUT/S,LOCAL/K,GLOBAL/K,
- LOAD/S,BATT/S
-
- Also sieht die Syntax folgendermaßen aus:
-
- TimeCheck [[DATE]|SINCE anfangsdatum] [[FROM] anfangszeit]
- [UPTO enddatum] [TILL endzeit]
- [STDOUT] [LOCAL prozessvariable] [GLOBAL umgebungsvariable]
- [LOAD] [BATT]
-
- Sieht alles ziemlich kompliziert aus, ist es aber eigentlich nicht. Hier nun
- die Beschreibungen zu allen Parametern:
-
- [DATE]|SINCE anfangsdatum - das Datum, welches nicht unterschritten werden
- darf, um das WARN-Flag zu setzen. Falls nur das
- Anfangsdatum aber kein Enddatum angegeben wird
- und das Schlüsselwort DATE bzw. gar kein
- Schlüsselwort verwendet wird, muß das Datum
- genau zutreffen. Bei SINCE wird jeder Tag ab
- dem Anfangsdatum akzeptiert.
-
- [FROM] anfangszeit - die Zeit, die an dem betreffenden Datum nicht
- unterschritten werden darf, um das WARN-Flag
- zu aktivieren. Wird sie weggelassen, ist der
- Tag von Anbeginn an gültig.
-
- UPTO enddatum - das Datum, welches nicht überschritten werden
- darf, um die WARN-Bedingung zutreffen zu las-
- sen.
-
- TILL endzeit - die Zeit, die am entsprechenden Tag nicht
- überschritten werden darf, um das WARN-Flag zu
- zu bekommen. Wird diese nicht angegeben, gilt
- jener Tag bis zum bitteren Ende.
-
- STDOUT - dieses Schlüsselwort bewirkt eine Ausgabe in
- die betreffende Console, insofern Erstere
- nicht umgeleitet wurde.
-
- LOCAL prozessvariable - die Ausgabe wird hiermit in die namentlich an-
- zugebende lokale Prozessvariable geleitet.
- Existiert die Variable bereits, wird sie über-
- schrieben, ansonsten neu angelegt.
-
- GLOBAL umgebungsvariable - die auszugebenden Daten kommen durch dieses
- Argument in die zu spezifizierende globale Um-
- gebungsvariable, die sich normalerweise in
- ENV: wiederfindet. Diese wird, soweit noch
- nicht vorhanden, erzeugt, anderenfalls wird
- der vorherige Inhalt überschrieben.
-
- LOAD - die in der batteriegepufferten Uhr enthaltene
- Zeit (und natürlich das Datum) wird in das
- System übernommen (Ersatz für "SetClock LOAD")
-
- BATT - das Datum und die Zeit der batteriegepufferten
- Uhr wird zur Verarbeitung herangezogen, ohne
- jedoch diese in das System zu laden.
-
- Weitere Hinweise: STDOUT, LOCAL und GLOBAL dürfen gleichzeitig verwendet wer-
- den, DATE und SINCE hingegen nicht. Bei Zutreffen des angegebenen Zeitraumes
- wird das WARN-Flag gesetzt (entspricht einem ReturnCode von 5), anderenfalls
- gelöscht (ReturnCode=0). Falls ein Fehler auftritt, wird das ERROR-Flag gesetzt
- (ReturnCode=10). Wird weder Datum noch Zeit angegeben, wird nur die Systemzeit
- bzw. die Zeit der batteriegepufferten Uhr ermittelt und gegebenenfalls (via
- STDOUT, LOCAL, GLOBAL) ausgegeben. Bei spezifizierter Zeitspanne UND vorhandenem
- STDOUT-, LOCAL- oder GLOBAL-Schlüsselwort wird zusätzlich zum gesetzten/gelösch-
- ten WARN-Flag eine "1" bei zutreffender Bedingung bzw. eine "0" bei Nichtzutref-
- fen ausgegeben. Falls der Anfangszeitpunkt einen späteren Zeitpunkt beschreibt
- als der Endzeitpunkt, so gilt nicht das Liegen der Systemzeit innerhalb jener
- Zeitspanne als zutreffend, sondern das außerhalb Liegen. Ein Datum wird im DOS-
- Format angegeben; d.h. es sind auch Wendungen wie "Gestern", "Heute" und "Mor-
- gen" zulässig (wenn auch wenig sinnvoll). Hingegen ist bei Angabe von Wochenta-
- gen (z.B. "Samstag") Vorsicht geboten, denn es scheint, als ob da im OS ein Bug
- ist - zumindest bei mir wird aus einem "Samstag" wie von Zauberhand "Freitag",
- also ein Tag vorher, und das gleiche trifft auf alle anderen Wochentage zu.
- (Liegt vielleicht an einer buggy locale.library in Verbindung mit der unter-
- schiedlichen Durchnumerierung der deutschen Wochentage im Gegensatz zu den ame-
- rikanischen)
- Falls diese Erläuterungen nicht 100%ig einleuchtend waren hier ein paar Bei-
- spiele:
-
- TimeCheck - Es geschieht nichts, da weder
- eine Zeitspanne vorhanden ist,
- noch eine Ausgabe verlangt
- wurde.
-
- TimeCheck 12-03-98 STDOUT - Wenn gerade der 12.März 1998
- ist, wird das WARN-Flag ge-
- setzt und eine "1" in die Con-
- sole ausgegeben.
-
- TimeCheck SINCE 13-04-99 LOCAL ZuSpaet - Wenn aktuell der 13.April 1999
- oder aber ein späteres Datum
- geschrieben wird, wird eine
- "1" in die Prozessvariable
- "ZuSpaet" geschrieben und das
- WARN-Flag gesetzt.
-
- TimeCheck UPTO 31-12-99 GLOBAL Pre2000 - Die Bedingung trifft zu, so-
- lange es kein späterer Tag als
- der 31.Dezember 1999 ist, in
- welchem Falle auch eine "1" in
- die Umgebungsvariable
- "Pre2000" ausgegen wird.
-
- TimeCheck 01-01-99 UPTO 01-01-00 LOAD - Systemzeit und -datum wird aus
- der batteriegepufferten Uhr
- geholt; falls das Datum zwi-
- schen 1.Januar 1999 und 1.Ja-
- nuar 2000 inclusive liegt,
- wird das WARN-Flag gesetzt.
-
- TimeCheck FROM 15:00 BATT - Die Zeit der batteriegepuffer-
- ten Uhr wird mit 3 Uhr nach-
- mittags verglichen, und falls
- erstere mit letzterer zusam-
- menfällt oder es aber später
- ist, so wird das WARN-Flag ge-
- setzt.
-
- TimeCheck FROM 12:34:56 TILL 23:45:01 - Insofern die Zeit innerhalb
- der angegebenen Spanne liegt,
- wird auch das WARN-Flag ge-
- setzt.
-
- TimeCheck 02-03-78 12:00 UPTO 04-05-77 - Wenn es gerade der 2.März 1978
- nach 11:59:59 oder ein späte-
- rer Tag zu einer beliebigen
- Zeit, allerdings nicht nach
- dem 4.Mai 2077, dann trifft
- die Bedingung zu.
-
- TimeCheck 26-Jan-80 04:18 UPTO 29-Jun-79 - Das WARN-Flag wird gesetzt,
- TILL 12:07 wenn gerade entweder ein Zeit-
- punkt vor dem 29.Juni 1979 um
- 12 Uhr 7 oder nach dem 26.Ja-
- nuar 1980 um 4 Uhr 18 ist.
-
- Nun vielleicht ein paar exemplarische Anwendungen in Script-Dateien:
-
- ;die einfachste Variante
- ;...
- TimeCheck TILL 06:00
- IF WARN
- Echo "Mann, bin ich müde!"
- ENDIF
- ;...
-
- ;die zeilensparende Variante
- ;...
- IF `TimeCheck FROM 18:00 TILL 06:00 STDOUT` EQ 1
- Echo "Sag mal, wo ist denn die Sonne geblieben?"
- ELSE
- Echo "Ahhh, da ist die Sonne ja wieder!"
- ENDIF
- ;...
-
- ;Zwischenspeicherung für spätere Verwendung
- ;...
- TimeCheck 01-01-00 LOCAL millennium
- ;...
- IF $millenium EQ 1
- Echo "Das Jahr ZWEITAUSEND hat begonnen!"
- ENDIF
- ;...
-
- ;Prozessübergeifende Verwendung
- ;...
- TimeCheck 01-01-01 GLOBAL realmillennium
- ;...
- ;hier nun das andere Script, u.U. in einem anderen Prozess ausgeführt
- ;...
- IF $realmillennium EQ 1
- Echo "Heutiger Tag ist der Anbeginn eines neues Jahrtausends!"
- ENDIF
- ;...
-
- /* AREXX-Utilisation */
- /* ... */
- OPTIONS RESULTS
- ADDRESS COMMAND
- 'TimeCheck 01-04-00'
- IF rc=5 THEN
- DO
- Say 'Ich bin der Caps-Lock-Exterminator-Virus.'
- Say 'Ich zerstöre jetzt Ihre Caps-Lock-Taste!'
- Say '...'
- 'Wait 5'
- Say 'April! April!'
- END
- ADDRESS ... /* wer oder was auch immer zu adressieren ist */
- /* ... */
-
-
- Falls Sie den Autor kontaktieren wollen, hier seine Addy:
-
- Niels Böhm
- Johannes-Kepler-Str. 2a
- 07407 Rudolstadt-Schwarza
- GERMANY
-
-